﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Collections.ObjectModel;

namespace SyncList.Business.ValueObject
{

    public class Data : INotifyPropertyChanged
    {


        #region Attributs

        /// <summary>
        /// Utilisateur
        /// </summary>
        private string _userName;

        /// <summary>
        /// Chemin complet du fichier XML de "SyncList.xml"
        /// </summary>
        private string _xmlFileName;

        /// <summary>
        /// Liste des fichiers
        /// </summary>
        private List<FileItem> _files = new List<FileItem>();

         /// <summary>
        /// Chemin de base
        /// </summary>
        private ObservableCollection<string> _folders = new ObservableCollection<string>();


        /// <summary>
        /// Filtres de choix de fichier
        /// </summary>
        private FileFilter _fileFilter = new FileFilter();

        /// <summary>
        /// Titre de la liste
        /// </summary>
        private string _title;

        #endregion

        #region Constructeur


        /// <summary>
        /// Constructeur
        /// </summary>
        public Data()
        {
           // _files.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Files_CollectionChanged);
        }

      

        #endregion

        #region Propriétés

        /// <summary>
        /// Chemins de base
        /// </summary>
        public ObservableCollection<string> Folders
        {
            get { return (_folders); }
        }

        /// <summary>
        /// Titre de la liste
        /// </summary>
        public string Title
        {
            get { return (_title); }
            set { _title = value; }
        }


        ///// <summary>
        ///// Taille minimale
        ///// </summary>
        //public long MinSize
        //{
        //    get { return (_minSize); }
        //    set { _minSize = value;  }
        //}

        /// <summary>
        /// Filtres de choix de fichier
        /// </summary>
        public FileFilter FileFilter
        {
            get { return (_fileFilter); }
        }


        /// <summary>
        /// Liste des fichiers
        /// </summary>
        public List<FileItem> Files
        {
            get { return (_files); }
        }


        /// <summary>
        /// Nombre de fichiers
        /// </summary>
        public int FileCount
        {
            get { return (_files.Count); }
        }


        /// <summary>
        /// Nom de l'utilisateur à qui appartient la liste
        /// </summary>
        public string UserName
        {
            get { return (_userName); }
            set { _userName = value; }
        }

        /// <summary>
        /// Chemin complet du fichier XML de "SyncList.xml"
        /// </summary>
        public string XmlFileName
        {
            get { return (_xmlFileName); }
            set { _xmlFileName = value; }
        }



        #endregion

        #region PropertyChanged

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

        #endregion

        #region Gestion d'Evénements 


        /// <summary>
        /// Des fichiers ont été modifiés
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        //void Files_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        //{
        //    OnPropertyChanged("FileCount");
        //}



        #endregion


    }
}
